17. Zip 和 Enumerate(选学)
3 12 Zip and Enumerate V5
Zip 和 Enumerate
zip
和
enumerate
是实用的内置函数,可以在处理循环时用到。
Zip
zip
返回一个将多个可迭代对象组合成一个元组序列的迭代器。每个元组都包含所有可迭代对象中该位置的元素。例如,
list(zip(['a', 'b', 'c'], [1, 2, 3]))
将输出
[('a', 1), ('b', 2), ('c', 3)]
.
正如
range()
一样,我们需要将其转换为列表或使用循环进行遍历以查看其中的元素。
你可以如下所示地用
for
循环拆分每个元组。
letters = ['a', 'b', 'c']
nums = [1, 2, 3]
for letter, num in zip(letters, nums):
print("{}: {}".format(letter, num))
除了可以将两个列表组合到一起之外,还可以使用星号拆分列表。
some_list = [('a', 1), ('b', 2), ('c', 3)]
letters, nums = zip(*some_list)
这样可以创建正如之前看到的相同
letters
和
nums
列表。
Enumerate
enumerate
是一个会返回元组迭代器的内置函数,这些元组包含列表的索引和值。当你需要在循环中获取可迭代对象的每个元素及其索引时,将经常用到该函数。
letters = ['a', 'b', 'c', 'd', 'e']
for i, letter in enumerate(letters):
print(i, letter)
这段代码将输出:
0 a
1 b
2 c
3 d
4 e